package uaparser

var DefinitionYaml = []byte(`
user_agent_parsers:
  - regex: '(GeoEvent Server) ((?:\d+\.)*\d+)'
  - regex: '(ArcGIS Pro)(?: ((?:\d+\.)*\d+)|)'
  - regex: 'ArcGIS Client Using WinInet'
    family_replacement: 'ArcMap'
  - regex: '(OperationsDashboard)-(?:Windows)-((?:\d+\.)*\d+)'
    family_replacement: 'Operations Dashboard for ArcGIS'
  - regex: '(arcgisearth)/((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Earth'
  - regex: 'com.esri.(earth).phone/((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Earth'
  - regex: '(arcgis-explorer)/((?:\d+\.)*\d+)'
    family_replacement: 'Explorer for ArcGIS'
  - regex: 'arcgis-(collector|aurora)/((?:\d+\.)*\d+)'
    family_replacement: 'Collector for ArcGIS'
  - regex: '(arcgis-workforce)/((?:\d+\.)*\d+)'
    family_replacement: 'Workforce for ArcGIS'
  - regex: '(Collector|Explorer|Workforce)-(?:Android|iOS)-((?:\d+\.)*\d+)'
    family_replacement: '$1 for ArcGIS'
  - regex: '(Explorer|Collector)/(\d+) CFNetwork'
    family_replacement: '$1 for ArcGIS'
  - regex: 'ArcGISRuntime-(Android|iOS|NET|Qt)/((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Runtime SDK for $1'
  - regex: 'ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)'
    family_replacement: 'ArcGIS Runtime SDK for $1'
  - regex: 'ArcGIS\.Runtime\.(Qt)\.((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Runtime SDK for $1'
  - regex: '^(Luminary)[Stage]+/(\d+) CFNetwork'
  - regex: '(ESPN)[%20| ]+Radio/((?:\d+\.)*\d+) CFNetwork'
  - regex: '(Antenna)/(\d+) CFNetwork'
    family_replacement: 'AntennaPod'
  - regex: '(TopPodcasts)Pro/(\d+) CFNetwork'
  - regex: '(MusicDownloader)Lite/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(.{0,200})-iPad\/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(.{0,200})-iPhone/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(.{0,200})/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(Luminary)/((?:\d+\.)*\d+)'
  - regex: '(espn\.go)'
    family_replacement: 'ESPN'
  - regex: '(espnradio\.com)'
    family_replacement: 'ESPN'
  - regex: 'ESPN APP$'
    family_replacement: 'ESPN'
  - regex: '(audioboom\.com)'
    family_replacement: 'AudioBoom'
  - regex: ' (Rivo) RHYTHM'
  - regex: '(CFNetwork)(?:/((?:\d+\.)*\d+)|)'
    family_replacement: 'CFNetwork'
  - regex: '(Pingdom\.com_bot_version_)((?:\d+\.)*\d+)'
    family_replacement: 'PingdomBot'
  - regex: '(PingdomTMS)/((?:\d+\.)*\d+)'
    family_replacement: 'PingdomBot'
  - regex: '(PingdomPageSpeed)/((?:\d+\.)*\d+)'
    family_replacement: 'PingdomBot'
  - regex: ' (PTST)/((?:\d+\.)*\d+)$'
    family_replacement: 'WebPageTest.org bot'
  - regex: 'X11; (Datanyze); Linux'
  - regex: '(NewRelicPinger)/((?:\d+\.)*\d+)'
    family_replacement: 'NewRelicPingerBot'
  - regex: '(Tableau)/((?:\d+\.)*\d+)'
    family_replacement: 'Tableau'
  - regex: 'AppleWebKit/\d{1,10}\.\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)/((?:\d+\.)*\d+)'
    family_replacement: 'Adobe CreativeCloud'
  - regex: '(Salesforce)(?:.)\/((?:\d+\.)*\d+)'
  - regex: '(\(StatusCake\))'
    family_replacement: 'StatusCakeBot'
  - regex: '(facebookexternalhit)/((?:\d+\.)*\d+)'
    family_replacement: 'FacebookBot'
  - regex: 'Google.{0,50}/\+/web/snippet'
    family_replacement: 'GooglePlusBot'
  - regex: 'via ggpht\.com GoogleImageProxy'
    family_replacement: 'GmailImageProxy'
  - regex: 'YahooMailProxy; https://help\.yahoo\.com/kb/yahoo-mail-proxy-SLN28749\.html'
    family_replacement: 'YahooMailProxy'
  - regex: '(Twitterbot)/((?:\d+\.)*\d+)'
    family_replacement: 'Twitterbot'
  - regex: '/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-]((?:\d+\.)*\d+)'
  - regex: '\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/((?:\d+\.)*\d+)'
  - regex: '(MSIE) ((?:\d+\.)*\d+)([a-z]\d|[a-z]|);.{0,200} MSIECrawler'
    family_replacement: 'MSIECrawler'
  - regex: '(DAVdroid)/((?:\d+\.)*\d+)'
  - regex: '(Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /]((?:\d+\.)*\d+)|)'
  - regex: '(Pinterest(?:bot|))/((?:\d+\.)*\d+)[;\s(]+\+https://www.pinterest.com/bot.html'
    family_replacement: 'Pinterestbot'
  - regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?((?:\d+\.)*\d+)|)'
  - regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|go-v\d|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/((?:\d+\.)*\d+)'
  - regex: '(FME)\/((?:\d+\.)*\d+)'
  - regex: '(QGIS)\/((?:\d+\.)*\d+)'
  - regex: '(JOSM)/((?:\d+\.)*\d+)'
  - regex: '(Tygron Platform) \(((?:\d+\.)*\d+(?: RC \d+\.\d+)?)\)'
  - regex: '\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/((?:\d+\.)*\d+)'
    family_replacement: 'Facebook Messenger'
  - regex: '\[FB.{0,300};(FBAV)/((?:\d+\.)*\d+)'
    family_replacement: 'Facebook'
  - regex: '\[FB.{0,300};'
    family_replacement: 'Facebook'
  - regex: '(RecipeRadar)/((?:\d+\.)*\d+)'
  - regex: '^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ]((?:\d+\.)*\d+)'
  - regex: '^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)((?:\d+\.)*\d+)|)'
  - regex: '^.{0,200}?((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)((?:\d+\.)*\d+)|)'
  - regex: '(HbbTV)/((?:\d+\.)*\d+) \('
  - regex: '(Chimera|SeaMonkey|Camino|Waterfox)/((?:\d+\.)*\d+\.?[ab]?\d*[a-z]*)'
  - regex: '(SailfishBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Sailfish Browser'
  - regex: '\[(Pinterest)/[^\]]{1,50}\]'
  - regex: '(Pinterest)(?: for Android(?: Tablet|)|)/((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Instagram).((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Flipboard).((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Onefootball)\/Android.((?:\d+\.)*\d+)'
  - regex: '(Snapchat)\/((?:\d+\.)*\d+)'
  - regex: '(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/((?:\d+\.)*\d+)|)'
    family_replacement: 'Twitter'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Phantom\/ios|Phantom\/android).((?:\d+\.)*\d+)'
    family_replacement: 'Phantom'
  - regex: 'Mozilla.{1,100}Mobile.{1,100}(AspiegelBot|PetalBot)'
    family_replacement: 'Spider'
  - regex: 'AspiegelBot|PetalBot'
    family_replacement: 'Spider'
  - regex: '(Firefox)/((?:\d+\.)*\d+) Basilisk/(\d+)'
    family_replacement: 'Basilisk'
  - regex: '(PaleMoon)/((?:\d+\.)*\d+)'
    family_replacement: 'Pale Moon'
  - regex: '(Fennec)/((?:\d+\.)*\d+\.?[ab]?\d*[a-z]*)'
    family_replacement: 'Firefox Mobile'
  - regex: '(Fennec)/((?:\d+\.)*\d+pre)'
    family_replacement: 'Firefox Mobile'
  - regex: '(Fennec)/((?:\d+\.)*\d+)'
    family_replacement: 'Firefox Mobile'
  - regex: '(?:Mobile|Tablet);.{0,200}(Firefox)/((?:\d+\.)*\d+)'
    family_replacement: 'Firefox Mobile'
  - regex: '(Namoroka|Shiretoko|Minefield)/((?:\d+\.)*\d+(?:pre|))'
    family_replacement: 'Firefox ($1)'
  - regex: '(Firefox)/((?:\d+\.)*\d+a\d+[a-z]*)'
    family_replacement: 'Firefox Alpha'
  - regex: '(Firefox)/((?:\d+\.)*\d+b\d+[a-z]*)'
    family_replacement: 'Firefox Beta'
  - regex: '(Firefox)-(?:\d+\.\d+|)/((?:\d+\.)*\d+a\d+[a-z]*)'
    family_replacement: 'Firefox Alpha'
  - regex: '(Firefox)-(?:\d+\.\d+|)/((?:\d+\.)*\d+b\d+[a-z]*)'
    family_replacement: 'Firefox Beta'
  - regex: '(Namoroka|Shiretoko|Minefield)/((?:\d+\.)*\d+[ab]\d*[a-z]*)'
    family_replacement: 'Firefox ($1)'
  - regex: '(Firefox).{0,200}Tablet browser ((?:\d+\.)*\d+)'
    family_replacement: 'MicroB'
  - regex: '(MozillaDeveloperPreview)/((?:\d+\.)*\d+[ab]\d*[a-z]*)'
  - regex: '(FxiOS)/((?:\d+\.)*\d+)'
    family_replacement: 'Firefox iOS'
  - regex: '(Flock)/((?:\d+\.)*\d+b\d+?)'
  - regex: '(RockMelt)/((?:\d+\.)*\d+)'
  - regex: '(Navigator)/((?:\d+\.)*\d+)'
    family_replacement: 'Netscape'
  - regex: '(Navigator)/((?:\d+\.)*\d+[ab]\d+)'
    family_replacement: 'Netscape'
  - regex: '(Netscape6)/((?:\d+\.)*\d+\.?[ab]?\d*)'
    family_replacement: 'Netscape'
  - regex: '(MyIBrow)/((?:\d+\.)*\d+)'
    family_replacement: 'My Internet Browser'
  - regex: '(UC? ?Browser|UCWEB|U3)[ /]?((?:\d+\.)*\d+)'
    family_replacement: 'UC Browser'
  - regex: '(Opera Tablet).{0,200}Version/((?:\d+\.)*\d+)'
  - regex: '(Opera Mini)(?:/att|)?/?((?:\d+\.)*\d+|)'
  - regex: '(Opera)/.{1,100}Opera Mobi.{1,100}Version/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mobile'
  - regex: '(Opera)/((?:\d+\.)*\d+).{1,100}Opera Mobi'
    family_replacement: 'Opera Mobile'
  - regex: 'Opera Mobi.{1,100}(Opera)(?:/|\s+)((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mobile'
  - regex: 'Opera Mobi'
    family_replacement: 'Opera Mobile'
  - regex: '(Opera)/9.80.{0,200}Version/((?:\d+\.)*\d+)'
  - regex: '(?:Mobile Safari).{1,300}(OPR)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mobile'
  - regex: '(?:Chrome).{1,300}(OPR)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera'
  - regex: '(Coast)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Coast'
  - regex: '(OPiOS)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mini'
  - regex: 'Chrome/.{1,200}( MMS)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Neon'
  - regex: '(hpw|web)OS/((?:\d+\.)*\d+)'
    family_replacement: 'webOS Browser'
  - regex: '(luakit)'
    family_replacement: 'LuaKit'
  - regex: '(Snowshoe)/((?:\d+\.)*\d+)'
  - regex: 'Gecko/\d+ (Lightning)/((?:\d+\.)*\d+\.?[ab]?\d*[a-z]*)'
  - regex: '(Firefox)/((?:\d+\.)*\d+) \(Swiftfox\)'
    family_replacement: 'Swiftfox'
  - regex: '(rekonq)/((?:\d+\.)*\d+) Safari'
    family_replacement: 'Rekonq'
  - regex: 'rekonq'
    family_replacement: 'Rekonq'
  - regex: '(conkeror|Conkeror)/((?:\d+\.)*\d+)'
    family_replacement: 'Conkeror'
  - regex: '(konqueror)/((?:\d+\.)*\d+)'
    family_replacement: 'Konqueror'
  - regex: '(WeTab)-Browser'
  - regex: '(Comodo_Dragon)/((?:\d+\.)*\d+)'
    family_replacement: 'Comodo Dragon'
  - regex: '(Symphony) ((?:\d+\.)*\d+)'
  - regex: 'PLAYSTATION 3.{1,200}WebKit'
    family_replacement: 'NetFront NX'
  - regex: 'PLAYSTATION 3'
    family_replacement: 'NetFront'
  - regex: '(PlayStation Portable)'
    family_replacement: 'NetFront'
  - regex: '(PlayStation Vita)'
    family_replacement: 'NetFront NX'
  - regex: 'AppleWebKit.{1,200} (NX)/((?:\d+\.)*\d+)'
    family_replacement: 'NetFront NX'
  - regex: '(Nintendo 3DS)'
    family_replacement: 'NetFront NX'
  - regex: '(HuaweiBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Huawei Browser'
  - regex: '(AVG)/((?:\d+\.)*\d+)'
    family_replacement: 'AVG'
  - regex: '(AvastSecureBrowser|Avast)/((?:\d+\.)*\d+)'
    family_replacement: 'Avast Secure Browser'
  - regex: '(Instabridge)/((?:\d+\.)*\d+)'
  - regex: '(AlohaBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Aloha Browser'
  - regex: '((?:B|b)rave(?:\sChrome)?)/((?:\d+\.)*\d+)'
    family_replacement: 'Brave'
  - regex: '(Silk)/((?:\d+\.)*\d+)'
    family_replacement: 'Amazon Silk'
  - regex: '(Puffin)/((?:\d+\.)*\d+)'
  - regex: 'Windows Phone .{0,200}(Edge)/((?:\d+\.)*\d+)'
    family_replacement: 'Edge Mobile'
  - regex: '(EdgiOS|EdgA)/((?:\d+\.)*\d+)'
    family_replacement: 'Edge Mobile'
  - regex: '(OculusBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Oculus Browser'
  - regex: '(SamsungBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Samsung Browser'
  - regex: '(HeyTapBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'HeyTap Browser'
  - regex: '(SznProhlizec)/((?:\d+\.)*\d+)'
    family_replacement: 'Seznam prohlížeč'
  - regex: '(coc_coc_browser)/((?:\d+\.)*\d+)'
    family_replacement: 'Coc Coc'
  - regex: '(baidubrowser)[/\s]((?:\d+\.)*\d+)'
    family_replacement: 'Baidu Browser'
  - regex: '(FlyFlow)/((?:\d+\.)*\d+)'
    family_replacement: 'Baidu Explorer'
  - regex: '(MxBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Maxthon'
  - regex: '(Crosswalk)/((?:\d+\.)*\d+)'
  - regex: '(Line)/((?:\d+\.)*\d+)'
    family_replacement: 'LINE'
  - regex: '(MiuiBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'MiuiBrowser'
  - regex: '(Mint Browser)/((?:\d+\.)*\d+)'
    family_replacement: 'Mint Browser'
  - regex: '(TopBuzz)/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: 'Mozilla.{1,200}Android.{1,200}(GSA)/((?:\d+\.)*\d+)'
    family_replacement: 'Google'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(DuckDuckGo)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo Mobile'
  - regex: 'Mozilla.{1,200}(DuckDuckGo)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Ddg)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo Mobile'
  - regex: 'Mozilla.{1,200}(Ddg)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo'
  - regex: '(Tenta/)((?:\d+\.)*\d+)'
    family_replacement: 'Tenta Browser'
  - regex: '(Ecosia) ios@((?:\d+\.)*\d+)'
    family_replacement: 'Ecosia iOS'
  - regex: '(Ecosia) android@((?:\d+\.)*\d+)'
    family_replacement: 'Ecosia Android'
  - regex: '(VivoBrowser)/((?:\d+\.)*\d+)'
  - regex: '(HiBrowser)/v((?:\d+\.)*\d+)'
  - regex: '; wv\).{1,300}(Chrome)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile WebView'
  - regex: '(CrMo)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile'
  - regex: '(CriOS)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile iOS'
  - regex: '(Chrome)/((?:\d+\.)*\d+) Mobile(?:[ /]|$)'
    family_replacement: 'Chrome Mobile'
  - regex: ' Mobile .{1,300}(Chrome)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile'
  - regex: '(chromeframe)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Frame'
  - regex: '(SLP Browser)/((?:\d+\.)*\d+)'
    family_replacement: 'Tizen Browser'
  - regex: '(SE 2\.X) MetaSr ((?:\d+\.)*\d+)'
    family_replacement: 'Sogou Explorer'
  - regex: '(Rackspace Monitoring)/((?:\d+\.)*\d+)'
    family_replacement: 'RackspaceBot'
  - regex: '(PRTG Network Monitor)'
  - regex: '(PyAMF)/((?:\d+\.)*\d+)'
  - regex: '(YaBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Yandex Browser'
  - regex: '(YaSearchBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Yandex Browser'
  - regex: '(Chrome)/((?:\d+\.)*\d+).{0,100} MRCHROME'
    family_replacement: 'Mail.ru Chromium Browser'
  - regex: '(AOL) ((?:\d+\.)*\d+); AOLBuild (\d+)'
  - regex: '(PodCruncher|Downcast)[ /]?((?:\d+\.)*\d+|)'
  - regex: ' (BoxNotes)/((?:\d+\.)*\d+)'
  - regex: '(Whale)/((?:\d+\.)*\d+) Mobile(?:[ /]|$)'
    family_replacement: 'Whale'
  - regex: '(Whale)/((?:\d+\.)*\d+)'
    family_replacement: 'Whale'
  - regex: '(1Password)/((?:\d+\.)*\d+)'
  - regex: '(Ghost)/((?:\d+\.)*\d+)'
  - regex: 'PAN (GlobalProtect)/((?:\d+\.)*\d+) .{1,100} \(X11; Linux x86_64\)'
  - regex: '^(surveyon)/((?:\d+\.)*\d+)'
    family_replacement: 'Surveyon'
  - regex: '(Slack_SSB)/((?:\d+\.)*\d+)'
    family_replacement: 'Slack Desktop Client'
  - regex: '(HipChat)/?((?:\d+\.)*\d+|)'
    family_replacement: 'HipChat Desktop Client'
  - regex: '\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron|OktaMobile)/((?:\d+\.)*\d+)'
  - regex: 'Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12'
    family_replacement: 'Outlook'
    version_replacement: '2007'
  - regex: 'Microsoft Outlook 14\.\d+\.\d+|MSOffice 14'
    family_replacement: 'Outlook'
    version_replacement: '2010'
  - regex: 'Microsoft Outlook 15\.\d+\.\d+'
    family_replacement: 'Outlook'
    version_replacement: '2013'
  - regex: 'Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16'
    family_replacement: 'Outlook'
    version_replacement: '2016'
  - regex: 'Microsoft Office (Word) 2014'
  - regex: 'Outlook-Express\/7\.0'
    family_replacement: 'Windows Live Mail'
  - regex: '(Airmail) ((?:\d+\.)*\d+)'
  - regex: '(Thunderbird)/((?:\d+\.)*\d+(?:pre|))'
    family_replacement: 'Thunderbird'
  - regex: '(Postbox)/((?:\d+\.)*\d+)'
    family_replacement: 'Postbox'
  - regex: '(Barca(?:Pro)?)/((?:\d+\.)*\d+)'
    family_replacement: 'Barca'
  - regex: '(Lotus-Notes)/((?:\d+\.)*\d+)'
    family_replacement: 'Lotus Notes'
  - regex: 'Superhuman'
    family_replacement: 'Superhuman'
  - regex: '(Vivaldi)/((?:\d+\.)*\d+)'
  - regex: '(Edge?)/((?:\d+\.)*\d+)'
    family_replacement: 'Edge'
  - regex: '(Chrome)/((?:\d+\.)*\d+)[\d.]{0,100} Iron[^/]'
    family_replacement: 'Iron'
  - regex: '\b(Dolphin)(?: |HDCN/|/INT\-)((?:\d+\.)*\d+)'
  - regex: '(HeadlessChrome)(?:/((?:\d+\.)*\d+)|)'
  - regex: '(Evolution)/((?:\d+\.)*\d+\.\d+)'
  - regex: '(RCM CardDAV plugin)/((?:\d+\.)*\d+(?:-dev|))'
  - regex: '(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/((?:\d+\.)*\d+)'
  - regex: '(IEMobile)[ /]((?:\d+\.)*\d+)'
    family_replacement: 'IE Mobile'
  - regex: '(BacaBerita App)\/((?:\d+\.)*\d+)'
  - regex: '^(bPod|Pocket Casts|Player FM)$'
  - regex: '^(AlexaMediaPlayer|VLC)/((?:\d+\.)*\d+)'
  - regex: '^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)/((?:\d+\.)*\d+)'
  - regex: '^(Peapod|Liferea)/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)'
  - regex: '^(bPod|Player FM) BMID/(\S+)'
  - regex: '^(Podcast ?Addict)/v((?:\d+\.)*\d+) '
  - regex: '^(Podcast ?Addict) '
    family_replacement: 'PodcastAddict'
  - regex: '(Replay) AV'
  - regex: '(VOX) Music Player'
  - regex: '(CITA) RSS Aggregator/((?:\d+\.)*\d+)'
  - regex: '(Pocket Casts)$'
  - regex: '(Player FM)$'
  - regex: '(LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) ((?:\d+\.)*\d+)'
  - regex: '(philpodder)/((?:\d+\.)*\d+)'
  - regex: '(Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)'
  - regex: '(QuickTime)\.((?:\d+\.)*\d+)'
  - regex: '(Kinoma)((?:\d+\.)*\d+)'
  - regex: '(Fancy) Cloud Music ((?:\d+\.)*\d+)'
    family_replacement: 'FancyMusic'
  - regex: 'EspnDownloadManager'
    family_replacement: 'ESPN'
  - regex: '(ESPN) Radio ((?:\d+\.)*\d+) ?(?:rv:(\d+)|) '
  - regex: '(podracer|jPodder) v ?((?:\d+\.)*\d+)'
  - regex: '(ZDM)/((?:\d+\.)*\d+)[; ]?'
  - regex: '(Zune|BeyondPod) ((?:\d+\.)*\d+)[\);]'
  - regex: '(WMPlayer)/((?:\d+\.)*\d+)'
  - regex: '^(Lavf)'
    family_replacement: 'WMPlayer'
  - regex: '^(RSSRadio)[ /]?((?:\d+\.)*\d+|)'
  - regex: '(RSS_Radio) ((?:\d+\.)*\d+)'
    family_replacement: 'RSSRadio'
  - regex: '(Podkicker) \S+/((?:\d+\.)*\d+)'
    family_replacement: 'Podkicker'
  - regex: '^(HTC) Streaming Player \S+ / \S+ / \S+ / ((?:\d+\.)*\d+)'
  - regex: '^(Stitcher)/iOS'
  - regex: '^(Stitcher)/Android'
  - regex: '^(VLC) .{0,200}version ((?:\d+\.)*\d+)'
  - regex: ' (VLC) for'
  - regex: '(vlc)/((?:\d+\.)*\d+)'
    family_replacement: 'VLC'
  - regex: '^(foobar)\S{1,10}/((?:\d+\.)*\d+|)'
  - regex: '^(Clementine)\S{1,10} ((?:\d+\.)*\d+|)'
  - regex: '(amarok)/((?:\d+\.)*\d+|)'
    family_replacement: 'Amarok'
  - regex: '(Custom)-Feed Reader'
  - regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) ((?:\d+\.)*\d+)'
  - regex: '(Kindle)/((?:\d+\.)*\d+)'
  - regex: '(Android) Donut'
    version_replacement: '1.2'
  - regex: '(Android) Eclair'
    version_replacement: '2.1'
  - regex: '(Android) Froyo'
    version_replacement: '2.2'
  - regex: '(Android) Gingerbread'
    version_replacement: '2.3'
  - regex: '(Android) Honeycomb'
    version_replacement: '3'
  - regex: '(MSIE) ((?:\d+\.)*\d+).{0,100}XBLWP7'
    family_replacement: 'IE Large Screen'
  - regex: '(Nextcloud)'
  - regex: '(mirall)/((?:\d+\.)*\d+)'
  - regex: '(ownCloud-android)/((?:\d+\.)*\d+)'
    family_replacement: 'Owncloud'
  - regex: '(OC)/((?:\d+\.)*\d+) \(Skype for Business\)'
    family_replacement: 'Skype'
  - regex: '(OpenVAS)(?:-VT)?(?:[ \/]((?:\d+\.)*\d+)|)'
    family_replacement: 'OpenVAS Scanner'
  - regex: '(AnyConnect)\/((?:\d+\.)*\d+|)'
  - regex: 'compatible; monitis'
    family_replacement: 'Monitis'
  - regex: '(Obigo)InternetBrowser'
  - regex: '(Obigo)\-Browser'
  - regex: '(Obigo|OBIGO)[^\d]*((?:\d+\.)*\d+|)'
    family_replacement: 'Obigo'
  - regex: '(MAXTHON|Maxthon) ((?:\d+\.)*\d+)'
    family_replacement: 'Maxthon'
  - regex: '(Maxthon|MyIE2|Uzbl|Shiira)'
    version_replacement: '0'
  - regex: '(BrowseX) \(((?:\d+\.)*\d+)'
  - regex: '(NCSA_Mosaic)/((?:\d+\.)*\d+)'
    family_replacement: 'NCSA Mosaic'
  - regex: '(POLARIS)/((?:\d+\.)*\d+)'
    family_replacement: 'Polaris'
  - regex: '(Embider)/((?:\d+\.)*\d+)'
    family_replacement: 'Polaris'
  - regex: '(BonEcho)/((?:\d+\.)*\d+\.?[ab]?\d*|)'
    family_replacement: 'Bon Echo'
  - regex: '(TopBuzz) com.alex.NewsMaster/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: '(TopBuzz) com.mobilesrepublic.newsrepublic/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: '(TopBuzz) com.topbuzz.videoen/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: '(iPod|iPhone|iPad).{1,200}GSA/((?:\d+\.)*\d+) Mobile'
    family_replacement: 'Google'
  - regex: '(iPod|iPhone|iPad).{1,200}Version/((?:\d+\.)*\d+).{1,200}[ +]Safari'
    family_replacement: 'Mobile Safari'
  - regex: '(iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\d+)_(\d+)(?:_(\d+)|).{0,30} AppleNews\/((?:\d+\.)*\d+|)'
    family_replacement: 'Mobile Safari UI/WKWebView'
  - regex: '(iPod|iPhone|iPad).{1,200}Version/((?:\d+\.)*\d+)'
    family_replacement: 'Mobile Safari UI/WKWebView'
  - regex: '(iPod|iPod touch|iPhone|iPad).{0,200} Safari'
    family_replacement: 'Mobile Safari'
  - regex: '(iPod|iPod touch|iPhone|iPad)'
    family_replacement: 'Mobile Safari UI/WKWebView'
  - regex: '(Watch)((?:\d+\.)*\d+),(\d+)'
    family_replacement: 'Apple $1 App'
  - regex: '(Outlook-iOS)/((?:\d+\.)*\d+)\.prod\.iphone \(((?:\d+\.)*\d+)\)'
  - regex: '(AvantGo) ((?:\d+\.)*\d+)'
  - regex: '(OneBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'ONE Browser'
  - regex: '(Avant)'
    version_replacement: '1'
  - regex: '(QtCarBrowser)'
    version_replacement: '1'
  - regex: '^(iBrowser/Mini)((?:\d+\.)*\d+)'
    family_replacement: 'iBrowser Mini'
  - regex: '^(iBrowser|iRAPP)/((?:\d+\.)*\d+)'
  - regex: '^(Nokia)'
    family_replacement: 'Nokia Services (WAP) Browser'
  - regex: '(NokiaBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Nokia Browser'
  - regex: '(BrowserNG)/((?:\d+\.)*\d+)'
    family_replacement: 'Nokia Browser'
  - regex: '(Series60)/5\.0'
    family_replacement: 'Nokia Browser'
    version_replacement: '7.0'
  - regex: '(Series60)/((?:\d+\.)*\d+)'
    family_replacement: 'Nokia OSS Browser'
  - regex: '(S40OviBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Ovi Browser'
  - regex: '(Nokia)[EN]?(\d+)'
  - regex: '(PlayBook).{1,200}RIM Tablet OS ((?:\d+\.)*\d+)'
    family_replacement: 'BlackBerry WebKit'
  - regex: '(Black[bB]erry|BB10).{1,200}Version/((?:\d+\.)*\d+)'
    family_replacement: 'BlackBerry WebKit'
  - regex: '(Black[bB]erry)\s?(\d+)'
    family_replacement: 'BlackBerry'
  - regex: '(OmniWeb)/v((?:\d+\.)*\d+)'
  - regex: '(Blazer)/((?:\d+\.)*\d+)'
    family_replacement: 'Palm Blazer'
  - regex: '(Pre)/((?:\d+\.)*\d+)'
    family_replacement: 'Palm Pre'
  - regex: '(ELinks)/((?:\d+\.)*\d+)'
  - regex: '(ELinks) \(((?:\d+\.)*\d+)'
  - regex: '(Links) \(((?:\d+\.)*\d+)'
  - regex: '(QtWeb) Internet Browser/((?:\d+\.)*\d+)'
  - regex: '(PhantomJS)/((?:\d+\.)*\d+)'
  - regex: '(AppleWebKit)/(\d+)(?:\.(\d+)|)\+ .{0,200} Safari'
    family_replacement: 'WebKit Nightly'
  - regex: '(OLPC)/Update((?:\d+\.)*\d+)'
  - regex: '(OLPC)/Update()\.(\d+)'
    version_replacement: '0'
  - regex: '(SEMC\-Browser)/((?:\d+\.)*\d+)'
  - regex: '(Teleca)'
    family_replacement: 'Teleca Browser'
  - regex: '(Phantom)/V((?:\d+\.)*\d+)'
    family_replacement: 'Phantom Browser'
  - regex: '(Trident)/(7|8)\.(0)'
    family_replacement: 'IE'
    version_replacement: '11'
  - regex: '(Trident)/(6)\.(0)'
    family_replacement: 'IE'
    version_replacement: '10'
  - regex: '(Trident)/(5)\.(0)'
    family_replacement: 'IE'
    version_replacement: '9'
  - regex: '(Trident)/(4)\.(0)'
    family_replacement: 'IE'
    version_replacement: '8'
  - regex: '(Espial)/((?:\d+\.)*\d+)'
  - regex: '(Firefox)/((?:\d+\.)*\d+)$'
  - regex: '(Firefox)/((?:\d+\.)*\d+)(pre|[ab]\d+[a-z]*|)'
  - regex: '([MS]?IE) ((?:\d+\.)*\d+)'
    family_replacement: 'IE'
  - regex: '(python-requests)/((?:\d+\.)*\d+)'
    family_replacement: 'Python Requests'
  - regex: '\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC|HTTPie)(?:[ /]((?:\d+\.)*\d+)|)'
  - regex: '^(cf)\/((?:\d+\.)*\d+)'
    family_replacement: 'CloudFoundry'
  - regex: '^(sap-leonardo-iot-sdk-nodejs) \/ ((?:\d+\.)*\d+)'
  - regex: '^(SAP NetWeaver Application Server) \(1.0;(\d{1})(\d{2})\)'
  - regex: '^(\w+-HTTPClient)\/((?:\d+\.)*\d+)-(\S+)'
    family_replacement: 'HTTPClient'
  - regex: '^(go-cli)\s((?:\d+\.)*\d+)'
  - regex: '^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\/v?((?:\d+\.)*\d+)'
  - regex: '^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY)'
  - regex: '(Python/3\.\d{1,3} aiohttp)/((?:\d+\.)*\d+)'
    family_replacement: 'Python aiohttp'
  - regex: '(Java)[/ ]?\d{1}\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)'
  - regex: '(Java)[/ ]?((?:\d+\.)*\d+)'
  - regex: '(minio-go)/v((?:\d+\.)*\d+)'
  - regex: '^(ureq)[/ ]((?:\d+\.)*\d+)'
  - regex: '^(http\.rb)/((?:\d+\.)*\d+)'
  - regex: '^(GuzzleHttp)/((?:\d+\.)*\d+)'
  - regex: '^(grab)\b'
  - regex: '^(Cyberduck)/((?:\d+\.)*\d+)(?:\.\d+|)'
  - regex: '^(S3 Browser) ((?:\d+\.)*\d+)(?:\s*https?://s3browser\.com|)'
  - regex: '(S3Gof3r)'
  - regex: '\b(ibm-cos-sdk-(?:core|java|js|python))/((?:\d+\.)*\d+)'
  - regex: '^(rusoto)/((?:\d+\.)*\d+)'
  - regex: '(GeoEvent Server) ((?:\d+\.)*\d+)'
  - regex: '(ArcGIS Pro)(?: ((?:\d+\.)*\d+)|)'
  - regex: 'ArcGIS Client Using WinInet'
    family_replacement: 'ArcMap'
  - regex: '(OperationsDashboard)-(?:Windows)-((?:\d+\.)*\d+)'
    family_replacement: 'Operations Dashboard for ArcGIS'
  - regex: '(arcgisearth)/((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Earth'
  - regex: 'com.esri.(earth).phone/((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Earth'
  - regex: '(arcgis-explorer)/((?:\d+\.)*\d+)'
    family_replacement: 'Explorer for ArcGIS'
  - regex: 'arcgis-(collector|aurora)/((?:\d+\.)*\d+)'
    family_replacement: 'Collector for ArcGIS'
  - regex: '(arcgis-workforce)/((?:\d+\.)*\d+)'
    family_replacement: 'Workforce for ArcGIS'
  - regex: '(Collector|Explorer|Workforce)-(?:Android|iOS)-((?:\d+\.)*\d+)'
    family_replacement: '$1 for ArcGIS'
  - regex: '(Explorer|Collector)/(\d+) CFNetwork'
    family_replacement: '$1 for ArcGIS'
  - regex: 'ArcGISRuntime-(Android|iOS|NET|Qt)/((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Runtime SDK for $1'
  - regex: 'ArcGIS\.?(iOS|Android|NET|Qt)(?:-|\.)(\d+)\.(\d+)(?:\.(\d+)|)'
    family_replacement: 'ArcGIS Runtime SDK for $1'
  - regex: 'ArcGIS\.Runtime\.(Qt)\.((?:\d+\.)*\d+)'
    family_replacement: 'ArcGIS Runtime SDK for $1'
  - regex: '^(Luminary)[Stage]+/(\d+) CFNetwork'
  - regex: '(ESPN)[%20| ]+Radio/((?:\d+\.)*\d+) CFNetwork'
  - regex: '(Antenna)/(\d+) CFNetwork'
    family_replacement: 'AntennaPod'
  - regex: '(TopPodcasts)Pro/(\d+) CFNetwork'
  - regex: '(MusicDownloader)Lite/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(.{0,200})-iPad\/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(.{0,200})-iPhone/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(.{0,200})/((?:\d+\.)*\d+) CFNetwork'
  - regex: '^(Luminary)/((?:\d+\.)*\d+)'
  - regex: '(espn\.go)'
    family_replacement: 'ESPN'
  - regex: '(espnradio\.com)'
    family_replacement: 'ESPN'
  - regex: 'ESPN APP$'
    family_replacement: 'ESPN'
  - regex: '(audioboom\.com)'
    family_replacement: 'AudioBoom'
  - regex: ' (Rivo) RHYTHM'
  - regex: '(CFNetwork)(?:/((?:\d+\.)*\d+)|)'
    family_replacement: 'CFNetwork'
  - regex: '(Pingdom\.com_bot_version_)((?:\d+\.)*\d+)'
    family_replacement: 'PingdomBot'
  - regex: '(PingdomTMS)/((?:\d+\.)*\d+)'
    family_replacement: 'PingdomBot'
  - regex: '(PingdomPageSpeed)/((?:\d+\.)*\d+)'
    family_replacement: 'PingdomBot'
  - regex: ' (PTST)/((?:\d+\.)*\d+)$'
    family_replacement: 'WebPageTest.org bot'
  - regex: 'X11; (Datanyze); Linux'
  - regex: '(NewRelicPinger)/((?:\d+\.)*\d+)'
    family_replacement: 'NewRelicPingerBot'
  - regex: '(Tableau)/((?:\d+\.)*\d+)'
    family_replacement: 'Tableau'
  - regex: 'AppleWebKit/\d{1,10}\.\d{1,10}.{0,200} Safari.{0,200} (CreativeCloud)/((?:\d+\.)*\d+)'
    family_replacement: 'Adobe CreativeCloud'
  - regex: '(Salesforce)(?:.)\/((?:\d+\.)*\d+)'
  - regex: '(\(StatusCake\))'
    family_replacement: 'StatusCakeBot'
  - regex: '(facebookexternalhit)/((?:\d+\.)*\d+)'
    family_replacement: 'FacebookBot'
  - regex: 'Google.{0,50}/\+/web/snippet'
    family_replacement: 'GooglePlusBot'
  - regex: 'via ggpht\.com GoogleImageProxy'
    family_replacement: 'GmailImageProxy'
  - regex: 'YahooMailProxy; https://help\.yahoo\.com/kb/yahoo-mail-proxy-SLN28749\.html'
    family_replacement: 'YahooMailProxy'
  - regex: '(Twitterbot)/((?:\d+\.)*\d+)'
    family_replacement: 'Twitterbot'
  - regex: '/((?:Ant-|)Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-]((?:\d+\.)*\d+)'
  - regex: '\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|OgScrper|Pandora|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/((?:\d+\.)*\d+)'
  - regex: '(MSIE) ((?:\d+\.)*\d+)([a-z]\d|[a-z]|);.{0,200} MSIECrawler'
    family_replacement: 'MSIECrawler'
  - regex: '(DAVdroid)/((?:\d+\.)*\d+)'
  - regex: '(Google-HTTP-Java-Client|Apache-HttpClient|PostmanRuntime|Go-http-client|scalaj-http|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp|aihttp|reqwest|axios|unirest-(?:java|python|ruby|nodejs|php|net))(?:[ /]((?:\d+\.)*\d+)|)'
  - regex: '(Pinterest(?:bot|))/((?:\d+\.)*\d+)[;\s(]+\+https://www.pinterest.com/bot.html'
    family_replacement: 'Pinterestbot'
  - regex: '(CSimpleSpider|Cityreview Robot|CrawlDaddy|CrawlFire|Finderbots|Index crawler|Job Roboter|KiwiStatus Spider|Lijit Crawler|QuerySeekerSpider|ScollSpider|Trends Crawler|USyd-NLP-Spider|SiteCat Webbot|BotName\/\$BotVersion|123metaspider-Bot|1470\.net crawler|50\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]{1,30}-Agent|AdsBot-Google(?:-[a-z]{1,30}|)|altavista|AppEngine-Google|archive.{0,30}\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]{1,30})(?:-[A-Za-z]{1,30}|)|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader Blog Indexer|BoardReader Favicon Fetcher|boitho.com-dc|BotSeer|BUbiNG|\b\w{0,30}favicon\w{0,30}\b|\bYeti(?:-[a-z]{1,30}|)|Catchpoint(?: bot|)|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\(S\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher|)|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]{1,30}-|)Googlebot(?:-[a-zA-Z]{1,30}|)|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile|)|IconSurf|IlTrovatore(?:-Setaccio|)|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]{1,30}Bot|jbot\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .{0,30} Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media {0,2}|)|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]{0,30}|^NING|Nutch[^/]{0,30}|Nymesis|ObjectsSearch|OgScrper|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PHPCrawl|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|SemrushBot|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\.ru|Tiny Tiny RSS|Twitterbot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]{1,30}|WhatWeb|WIRE|WordPress|Wotbox|www\.almaden\.ibm\.com|Xenu(?:.s|) Link Sleuth|Xerka [A-z]{1,30}Bot|yacy(?:bot|)|YahooSeeker|Yahoo! Slurp|Yandex\w{1,30}|YodaoBot(?:-[A-z]{1,30}|)|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\.ze\.bz|ZooShot|ZyBorg|ArcGIS Hub Indexer)(?:[ /]v?((?:\d+\.)*\d+)|)'
  - regex: '\b(Boto3?|JetS3t|aws-(?:cli|sdk-(?:cpp|go|go-v\d|java|nodejs|ruby2?|dotnet-(?:\d{1,2}|core)))|s3fs)/((?:\d+\.)*\d+)'
  - regex: '(FME)\/((?:\d+\.)*\d+)'
  - regex: '(QGIS)\/((?:\d+\.)*\d+)'
  - regex: '(JOSM)/((?:\d+\.)*\d+)'
  - regex: '(Tygron Platform) \(((?:\d+\.)*\d+(?: RC \d+\.\d+)?)\)'
  - regex: '\[(FBAN/MessengerForiOS|FB_IAB/MESSENGER);FBAV/((?:\d+\.)*\d+)'
    family_replacement: 'Facebook Messenger'
  - regex: '\[FB.{0,300};(FBAV)/((?:\d+\.)*\d+)'
    family_replacement: 'Facebook'
  - regex: '\[FB.{0,300};'
    family_replacement: 'Facebook'
  - regex: '(RecipeRadar)/((?:\d+\.)*\d+)'
  - regex: '^.{0,200}?(?:\/[A-Za-z0-9\.]{0,50}|) {0,2}([A-Za-z0-9 \-_\!\[\]:]{0,50}(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]{0,50}))[/ ]((?:\d+\.)*\d+)'
  - regex: '^.{0,200}?((?:[A-Za-z][A-Za-z0-9 -]{0,50}|)[^C][^Uu][Bb]ot)\b(?:(?:[ /]| v)((?:\d+\.)*\d+)|)'
  - regex: '^.{0,200}?((?:[A-z0-9]{1,50}|[A-z\-]{1,50} ?|)(?: the |)(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]{0,50})(?:(?:[ /]| v)((?:\d+\.)*\d+)|)'
  - regex: '(HbbTV)/((?:\d+\.)*\d+) \('
  - regex: '(Chimera|SeaMonkey|Camino|Waterfox)/((?:\d+\.)*\d+\.?[ab]?\d*[a-z]*)'
  - regex: '(SailfishBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Sailfish Browser'
  - regex: '\[(Pinterest)/[^\]]{1,50}\]'
  - regex: '(Pinterest)(?: for Android(?: Tablet|)|)/((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Instagram).((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Flipboard).((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Flipboard-Briefing).((?:\d+\.)*\d+)'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Onefootball)\/Android.((?:\d+\.)*\d+)'
  - regex: '(Snapchat)\/((?:\d+\.)*\d+)'
  - regex: '(Twitter for (?:iPhone|iPad)|TwitterAndroid)(?:\/((?:\d+\.)*\d+)|)'
    family_replacement: 'Twitter'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Phantom\/ios|Phantom\/android).((?:\d+\.)*\d+)'
    family_replacement: 'Phantom'
  - regex: 'Mozilla.{1,100}Mobile.{1,100}(AspiegelBot|PetalBot)'
    family_replacement: 'Spider'
  - regex: 'AspiegelBot|PetalBot'
    family_replacement: 'Spider'
  - regex: '(Firefox)/((?:\d+\.)*\d+) Basilisk/(\d+)'
    family_replacement: 'Basilisk'
  - regex: '(PaleMoon)/((?:\d+\.)*\d+)'
    family_replacement: 'Pale Moon'
  - regex: '(Fennec)/((?:\d+\.)*\d+\.?[ab]?\d*[a-z]*)'
    family_replacement: 'Firefox Mobile'
  - regex: '(Fennec)/((?:\d+\.)*\d+pre)'
    family_replacement: 'Firefox Mobile'
  - regex: '(Fennec)/((?:\d+\.)*\d+)'
    family_replacement: 'Firefox Mobile'
  - regex: '(?:Mobile|Tablet);.{0,200}(Firefox)/((?:\d+\.)*\d+)'
    family_replacement: 'Firefox Mobile'
  - regex: '(Namoroka|Shiretoko|Minefield)/((?:\d+\.)*\d+(?:pre|))'
    family_replacement: 'Firefox ($1)'
  - regex: '(Firefox)/((?:\d+\.)*\d+a\d+[a-z]*)'
    family_replacement: 'Firefox Alpha'
  - regex: '(Firefox)/((?:\d+\.)*\d+b\d+[a-z]*)'
    family_replacement: 'Firefox Beta'
  - regex: '(Firefox)-(?:\d+\.\d+|)/((?:\d+\.)*\d+a\d+[a-z]*)'
    family_replacement: 'Firefox Alpha'
  - regex: '(Firefox)-(?:\d+\.\d+|)/((?:\d+\.)*\d+b\d+[a-z]*)'
    family_replacement: 'Firefox Beta'
  - regex: '(Namoroka|Shiretoko|Minefield)/((?:\d+\.)*\d+[ab]\d*[a-z]*)'
    family_replacement: 'Firefox ($1)'
  - regex: '(Firefox).{0,200}Tablet browser ((?:\d+\.)*\d+)'
    family_replacement: 'MicroB'
  - regex: '(MozillaDeveloperPreview)/((?:\d+\.)*\d+[ab]\d*[a-z]*)'
  - regex: '(FxiOS)/((?:\d+\.)*\d+)'
    family_replacement: 'Firefox iOS'
  - regex: '(Flock)/((?:\d+\.)*\d+b\d+?)'
  - regex: '(RockMelt)/((?:\d+\.)*\d+)'
  - regex: '(Navigator)/((?:\d+\.)*\d+)'
    family_replacement: 'Netscape'
  - regex: '(Navigator)/((?:\d+\.)*\d+[ab]\d+)'
    family_replacement: 'Netscape'
  - regex: '(Netscape6)/((?:\d+\.)*\d+\.?[ab]?\d*)'
    family_replacement: 'Netscape'
  - regex: '(MyIBrow)/((?:\d+\.)*\d+)'
    family_replacement: 'My Internet Browser'
  - regex: '(UC? ?Browser|UCWEB|U3)[ /]?((?:\d+\.)*\d+)'
    family_replacement: 'UC Browser'
  - regex: '(Opera Tablet).{0,200}Version/((?:\d+\.)*\d+)'
  - regex: '(Opera Mini)(?:/att|)?/?((?:\d+\.)*\d+|)'
  - regex: '(Opera)/.{1,100}Opera Mobi.{1,100}Version/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mobile'
  - regex: '(Opera)/((?:\d+\.)*\d+).{1,100}Opera Mobi'
    family_replacement: 'Opera Mobile'
  - regex: 'Opera Mobi.{1,100}(Opera)(?:/|\s+)((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mobile'
  - regex: 'Opera Mobi'
    family_replacement: 'Opera Mobile'
  - regex: '(Opera)/9.80.{0,200}Version/((?:\d+\.)*\d+)'
  - regex: '(?:Mobile Safari).{1,300}(OPR)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mobile'
  - regex: '(?:Chrome).{1,300}(OPR)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera'
  - regex: '(Coast)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Coast'
  - regex: '(OPiOS)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Mini'
  - regex: 'Chrome/.{1,200}( MMS)/((?:\d+\.)*\d+)'
    family_replacement: 'Opera Neon'
  - regex: '(hpw|web)OS/((?:\d+\.)*\d+)'
    family_replacement: 'webOS Browser'
  - regex: '(luakit)'
    family_replacement: 'LuaKit'
  - regex: '(Snowshoe)/((?:\d+\.)*\d+)'
  - regex: 'Gecko/\d+ (Lightning)/((?:\d+\.)*\d+\.?[ab]?\d*[a-z]*)'
  - regex: '(Firefox)/((?:\d+\.)*\d+) \(Swiftfox\)'
    family_replacement: 'Swiftfox'
  - regex: '(rekonq)/((?:\d+\.)*\d+) Safari'
    family_replacement: 'Rekonq'
  - regex: 'rekonq'
    family_replacement: 'Rekonq'
  - regex: '(conkeror|Conkeror)/((?:\d+\.)*\d+)'
    family_replacement: 'Conkeror'
  - regex: '(konqueror)/((?:\d+\.)*\d+)'
    family_replacement: 'Konqueror'
  - regex: '(WeTab)-Browser'
  - regex: '(Comodo_Dragon)/((?:\d+\.)*\d+)'
    family_replacement: 'Comodo Dragon'
  - regex: '(Symphony) ((?:\d+\.)*\d+)'
  - regex: 'PLAYSTATION 3.{1,200}WebKit'
    family_replacement: 'NetFront NX'
  - regex: 'PLAYSTATION 3'
    family_replacement: 'NetFront'
  - regex: '(PlayStation Portable)'
    family_replacement: 'NetFront'
  - regex: '(PlayStation Vita)'
    family_replacement: 'NetFront NX'
  - regex: 'AppleWebKit.{1,200} (NX)/((?:\d+\.)*\d+)'
    family_replacement: 'NetFront NX'
  - regex: '(Nintendo 3DS)'
    family_replacement: 'NetFront NX'
  - regex: '(HuaweiBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Huawei Browser'
  - regex: '(AVG)/((?:\d+\.)*\d+)'
    family_replacement: 'AVG'
  - regex: '(AvastSecureBrowser|Avast)/((?:\d+\.)*\d+)'
    family_replacement: 'Avast Secure Browser'
  - regex: '(Instabridge)/((?:\d+\.)*\d+)'
  - regex: '(AlohaBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Aloha Browser'
  - regex: '((?:B|b)rave(?:\sChrome)?)/((?:\d+\.)*\d+)'
    family_replacement: 'Brave'
  - regex: '(Silk)/((?:\d+\.)*\d+)'
    family_replacement: 'Amazon Silk'
  - regex: '(Puffin)/((?:\d+\.)*\d+)'
  - regex: 'Windows Phone .{0,200}(Edge)/((?:\d+\.)*\d+)'
    family_replacement: 'Edge Mobile'
  - regex: '(EdgiOS|EdgA)/((?:\d+\.)*\d+)'
    family_replacement: 'Edge Mobile'
  - regex: '(OculusBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Oculus Browser'
  - regex: '(SamsungBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Samsung Browser'
  - regex: '(HeyTapBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'HeyTap Browser'
  - regex: '(SznProhlizec)/((?:\d+\.)*\d+)'
    family_replacement: 'Seznam prohlížeč'
  - regex: '(coc_coc_browser)/((?:\d+\.)*\d+)'
    family_replacement: 'Coc Coc'
  - regex: '(baidubrowser)[/\s]((?:\d+\.)*\d+)'
    family_replacement: 'Baidu Browser'
  - regex: '(FlyFlow)/((?:\d+\.)*\d+)'
    family_replacement: 'Baidu Explorer'
  - regex: '(MxBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Maxthon'
  - regex: '(Crosswalk)/((?:\d+\.)*\d+)'
  - regex: '(Line)/((?:\d+\.)*\d+)'
    family_replacement: 'LINE'
  - regex: '(MiuiBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'MiuiBrowser'
  - regex: '(Mint Browser)/((?:\d+\.)*\d+)'
    family_replacement: 'Mint Browser'
  - regex: '(TopBuzz)/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: 'Mozilla.{1,200}Android.{1,200}(GSA)/((?:\d+\.)*\d+)'
    family_replacement: 'Google'
  - regex: '(MQQBrowser/Mini)(?:(?:(?:\d+\.)*\d+)|)'
    family_replacement: 'QQ Browser'
  - regex: '(MQQBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'QQ Browser'
  - regex: '(QQBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'QQ Browser'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(DuckDuckGo)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo Mobile'
  - regex: 'Mozilla.{1,200}(DuckDuckGo)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo'
  - regex: 'Mozilla.{1,200}Mobile.{1,100}(Ddg)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo Mobile'
  - regex: 'Mozilla.{1,200}(Ddg)/((?:\d+\.)*\d+)'
    family_replacement: 'DuckDuckGo'
  - regex: '(Tenta/)((?:\d+\.)*\d+)'
    family_replacement: 'Tenta Browser'
  - regex: '(Ecosia) ios@((?:\d+\.)*\d+)'
    family_replacement: 'Ecosia iOS'
  - regex: '(Ecosia) android@((?:\d+\.)*\d+)'
    family_replacement: 'Ecosia Android'
  - regex: '(VivoBrowser)/((?:\d+\.)*\d+)'
  - regex: '(HiBrowser)/v((?:\d+\.)*\d+)'
  - regex: 'Version/.{1,300}(Chrome)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile WebView'
  - regex: '; wv\).{1,300}(Chrome)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile WebView'
  - regex: '(CrMo)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile'
  - regex: '(CriOS)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile iOS'
  - regex: '(Chrome)/((?:\d+\.)*\d+) Mobile(?:[ /]|$)'
    family_replacement: 'Chrome Mobile'
  - regex: ' Mobile .{1,300}(Chrome)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Mobile'
  - regex: '(chromeframe)/((?:\d+\.)*\d+)'
    family_replacement: 'Chrome Frame'
  - regex: '(SLP Browser)/((?:\d+\.)*\d+)'
    family_replacement: 'Tizen Browser'
  - regex: '(SE 2\.X) MetaSr ((?:\d+\.)*\d+)'
    family_replacement: 'Sogou Explorer'
  - regex: '(Rackspace Monitoring)/((?:\d+\.)*\d+)'
    family_replacement: 'RackspaceBot'
  - regex: '(PRTG Network Monitor)'
  - regex: '(PyAMF)/((?:\d+\.)*\d+)'
  - regex: '(YaBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Yandex Browser'
  - regex: '(YaSearchBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Yandex Browser'
  - regex: '(Chrome)/((?:\d+\.)*\d+).{0,100} MRCHROME'
    family_replacement: 'Mail.ru Chromium Browser'
  - regex: '(AOL) ((?:\d+\.)*\d+); AOLBuild (\d+)'
  - regex: '(PodCruncher|Downcast)[ /]?((?:\d+\.)*\d+|)'
  - regex: ' (BoxNotes)/((?:\d+\.)*\d+)'
  - regex: '(Whale)/((?:\d+\.)*\d+) Mobile(?:[ /]|$)'
    family_replacement: 'Whale'
  - regex: '(Whale)/((?:\d+\.)*\d+)'
    family_replacement: 'Whale'
  - regex: '(1Password)/((?:\d+\.)*\d+)'
  - regex: '(Ghost)/((?:\d+\.)*\d+)'
  - regex: 'PAN (GlobalProtect)/((?:\d+\.)*\d+) .{1,100} \(X11; Linux x86_64\)'
  - regex: '^(surveyon)/((?:\d+\.)*\d+)'
    family_replacement: 'Surveyon'
  - regex: '(Slack_SSB)/((?:\d+\.)*\d+)'
    family_replacement: 'Slack Desktop Client'
  - regex: '(HipChat)/?((?:\d+\.)*\d+|)'
    family_replacement: 'HipChat Desktop Client'
  - regex: '\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron|OktaMobile)/((?:\d+\.)*\d+)'
  - regex: 'Microsoft Office Outlook 12\.\d+\.\d+|MSOffice 12'
    family_replacement: 'Outlook'
    version_replacement: '2007'
  - regex: 'Microsoft Outlook 14\.\d+\.\d+|MSOffice 14'
    family_replacement: 'Outlook'
    version_replacement: '2010'
  - regex: 'Microsoft Outlook 15\.\d+\.\d+'
    family_replacement: 'Outlook'
    version_replacement: '2013'
  - regex: 'Microsoft Outlook (?:Mail )?16\.\d+\.\d+|MSOffice 16'
    family_replacement: 'Outlook'
    version_replacement: '2016'
  - regex: 'Microsoft Office (Word) 2014'
  - regex: 'Outlook-Express\/7\.0'
    family_replacement: 'Windows Live Mail'
  - regex: '(Airmail) ((?:\d+\.)*\d+)'
  - regex: '(Thunderbird)/((?:\d+\.)*\d+(?:pre|))'
    family_replacement: 'Thunderbird'
  - regex: '(Postbox)/((?:\d+\.)*\d+)'
    family_replacement: 'Postbox'
  - regex: '(Barca(?:Pro)?)/((?:\d+\.)*\d+)'
    family_replacement: 'Barca'
  - regex: '(Lotus-Notes)/((?:\d+\.)*\d+)'
    family_replacement: 'Lotus Notes'
  - regex: 'Superhuman'
    family_replacement: 'Superhuman'
  - regex: '(Vivaldi)/((?:\d+\.)*\d+)'
  - regex: '(Edge?)/((?:\d+\.)*\d+)'
    family_replacement: 'Edge'
  - regex: '(Chrome)/((?:\d+\.)*\d+)[\d.]{0,100} Iron[^/]'
    family_replacement: 'Iron'
  - regex: '\b(Dolphin)(?: |HDCN/|/INT\-)((?:\d+\.)*\d+)'
  - regex: '(HeadlessChrome)(?:/((?:\d+\.)*\d+)|)'
  - regex: '(Evolution)/((?:\d+\.)*\d+\.\d+)'
  - regex: '(RCM CardDAV plugin)/((?:\d+\.)*\d+(?:-dev|))'
  - regex: '(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/((?:\d+\.)*\d+)'
  - regex: '(Chromium|Chrome)/((?:\d+\.)*\d+)'
  - regex: '(IEMobile)[ /]((?:\d+\.)*\d+)'
    family_replacement: 'IE Mobile'
  - regex: '(BacaBerita App)\/((?:\d+\.)*\d+)'
  - regex: '^(bPod|Pocket Casts|Player FM)$'
  - regex: '^(AlexaMediaPlayer|VLC)/((?:\d+\.)*\d+)'
  - regex: '^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)/((?:\d+\.)*\d+)'
  - regex: '^(Peapod|Liferea)/([^.\s]+)\.([^.\s]+|)\.?([^.\s]+|)'
  - regex: '^(bPod|Player FM) BMID/(\S+)'
  - regex: '^(Podcast ?Addict)/v((?:\d+\.)*\d+) '
  - regex: '^(Podcast ?Addict) '
    family_replacement: 'PodcastAddict'
  - regex: '(Replay) AV'
  - regex: '(VOX) Music Player'
  - regex: '(CITA) RSS Aggregator/((?:\d+\.)*\d+)'
  - regex: '(Pocket Casts)$'
  - regex: '(Player FM)$'
  - regex: '(LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) ((?:\d+\.)*\d+)'
  - regex: '(philpodder)/((?:\d+\.)*\d+)'
  - regex: '(Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)'
  - regex: '(QuickTime)\.((?:\d+\.)*\d+)'
  - regex: '(Kinoma)((?:\d+\.)*\d+)'
  - regex: '(Fancy) Cloud Music ((?:\d+\.)*\d+)'
    family_replacement: 'FancyMusic'
  - regex: 'EspnDownloadManager'
    family_replacement: 'ESPN'
  - regex: '(ESPN) Radio ((?:\d+\.)*\d+) ?(?:rv:(\d+)|) '
  - regex: '(podracer|jPodder) v ?((?:\d+\.)*\d+)'
  - regex: '(ZDM)/((?:\d+\.)*\d+)[; ]?'
  - regex: '(Zune|BeyondPod) ((?:\d+\.)*\d+)[\);]'
  - regex: '(WMPlayer)/((?:\d+\.)*\d+)'
  - regex: '^(Lavf)'
    family_replacement: 'WMPlayer'
  - regex: '^(RSSRadio)[ /]?((?:\d+\.)*\d+|)'
  - regex: '(RSS_Radio) ((?:\d+\.)*\d+)'
    family_replacement: 'RSSRadio'
  - regex: '(Podkicker) \S+/((?:\d+\.)*\d+)'
    family_replacement: 'Podkicker'
  - regex: '^(HTC) Streaming Player \S+ / \S+ / \S+ / ((?:\d+\.)*\d+)'
  - regex: '^(Stitcher)/iOS'
  - regex: '^(Stitcher)/Android'
  - regex: '^(VLC) .{0,200}version ((?:\d+\.)*\d+)'
  - regex: ' (VLC) for'
  - regex: '(vlc)/((?:\d+\.)*\d+)'
    family_replacement: 'VLC'
  - regex: '^(foobar)\S{1,10}/((?:\d+\.)*\d+|)'
  - regex: '^(Clementine)\S{1,10} ((?:\d+\.)*\d+|)'
  - regex: '(amarok)/((?:\d+\.)*\d+|)'
    family_replacement: 'Amarok'
  - regex: '(Custom)-Feed Reader'
  - regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) ((?:\d+\.)*\d+)'
  - regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) ((?:\d+\.)*\d+|)'
  - regex: '(Kindle)/((?:\d+\.)*\d+)'
  - regex: '(Android) Donut'
    version_replacement: '1.2'
  - regex: '(Android) Eclair'
    version_replacement: '2.1'
  - regex: '(Android) Froyo'
    version_replacement: '2.2'
  - regex: '(Android) Gingerbread'
    version_replacement: '2.3'
  - regex: '(Android) Honeycomb'
    version_replacement: '3'
  - regex: '(MSIE) ((?:\d+\.)*\d+).{0,100}XBLWP7'
    family_replacement: 'IE Large Screen'
  - regex: '(Nextcloud)'
  - regex: '(mirall)/((?:\d+\.)*\d+)'
  - regex: '(ownCloud-android)/((?:\d+\.)*\d+)'
    family_replacement: 'Owncloud'
  - regex: '(OC)/((?:\d+\.)*\d+) \(Skype for Business\)'
    family_replacement: 'Skype'
  - regex: '(OpenVAS)(?:-VT)?(?:[ \/]((?:\d+\.)*\d+)|)'
    family_replacement: 'OpenVAS Scanner'
  - regex: '(AnyConnect)\/((?:\d+\.)*\d+|)'
  - regex: 'compatible; monitis'
    family_replacement: 'Monitis'
  - regex: '(Obigo)InternetBrowser'
  - regex: '(Obigo)\-Browser'
  - regex: '(Obigo|OBIGO)[^\d]*((?:\d+\.)*\d+|)'
    family_replacement: 'Obigo'
  - regex: '(MAXTHON|Maxthon) ((?:\d+\.)*\d+)'
    family_replacement: 'Maxthon'
  - regex: '(Maxthon|MyIE2|Uzbl|Shiira)'
    version_replacement: '0'
  - regex: '(BrowseX) \(((?:\d+\.)*\d+)'
  - regex: '(NCSA_Mosaic)/((?:\d+\.)*\d+)'
    family_replacement: 'NCSA Mosaic'
  - regex: '(POLARIS)/((?:\d+\.)*\d+)'
    family_replacement: 'Polaris'
  - regex: '(Embider)/((?:\d+\.)*\d+)'
    family_replacement: 'Polaris'
  - regex: '(BonEcho)/((?:\d+\.)*\d+\.?[ab]?\d*|)'
    family_replacement: 'Bon Echo'
  - regex: '(TopBuzz) com.alex.NewsMaster/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: '(TopBuzz) com.mobilesrepublic.newsrepublic/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: '(TopBuzz) com.topbuzz.videoen/((?:\d+\.)*\d+)'
    family_replacement: 'TopBuzz'
  - regex: '(iPod|iPhone|iPad).{1,200}GSA/((?:\d+\.)*\d+) Mobile'
    family_replacement: 'Google'
  - regex: '(iPod|iPhone|iPad).{1,200}Version/((?:\d+\.)*\d+).{1,200}[ +]Safari'
    family_replacement: 'Mobile Safari'
  - regex: '(iPod|iPod touch|iPhone|iPad);.{0,30}CPU.{0,30}OS[ +](\d+)_(\d+)(?:_(\d+)|).{0,30} AppleNews\/((?:\d+\.)*\d+|)'
    family_replacement: 'Mobile Safari UI/WKWebView'
  - regex: '(iPod|iPhone|iPad).{1,200}Version/((?:\d+\.)*\d+)'
    family_replacement: 'Mobile Safari UI/WKWebView'
  - regex: '(iPod|iPod touch|iPhone|iPad).{0,200} Safari'
    family_replacement: 'Mobile Safari'
  - regex: '(iPod|iPod touch|iPhone|iPad)'
    family_replacement: 'Mobile Safari UI/WKWebView'
  - regex: '(Watch)((?:\d+\.)*\d+),(\d+)'
    family_replacement: 'Apple $1 App'
  - regex: '(Outlook-iOS)/((?:\d+\.)*\d+)\.prod\.iphone \(((?:\d+\.)*\d+)\)'
  - regex: '(AvantGo) ((?:\d+\.)*\d+)'
  - regex: '(OneBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'ONE Browser'
  - regex: '(Avant)'
    version_replacement: '1'
  - regex: '(QtCarBrowser)'
    version_replacement: '1'
  - regex: '^(iBrowser/Mini)((?:\d+\.)*\d+)'
    family_replacement: 'iBrowser Mini'
  - regex: '^(iBrowser|iRAPP)/((?:\d+\.)*\d+)'
  - regex: '^(Nokia)'
    family_replacement: 'Nokia Services (WAP) Browser'
  - regex: '(NokiaBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Nokia Browser'
  - regex: '(BrowserNG)/((?:\d+\.)*\d+)'
    family_replacement: 'Nokia Browser'
  - regex: '(Series60)/5\.0'
    family_replacement: 'Nokia Browser'
    version_replacement: '7.0'
  - regex: '(Series60)/((?:\d+\.)*\d+)'
    family_replacement: 'Nokia OSS Browser'
  - regex: '(S40OviBrowser)/((?:\d+\.)*\d+)'
    family_replacement: 'Ovi Browser'
  - regex: '(Nokia)[EN]?(\d+)'
  - regex: '(PlayBook).{1,200}RIM Tablet OS ((?:\d+\.)*\d+)'
    family_replacement: 'BlackBerry WebKit'
  - regex: '(Black[bB]erry|BB10).{1,200}Version/((?:\d+\.)*\d+)'
    family_replacement: 'BlackBerry WebKit'
  - regex: '(Black[bB]erry)\s?(\d+)'
    family_replacement: 'BlackBerry'
  - regex: '(OmniWeb)/v((?:\d+\.)*\d+)'
  - regex: '(Blazer)/((?:\d+\.)*\d+)'
    family_replacement: 'Palm Blazer'
  - regex: '(Pre)/((?:\d+\.)*\d+)'
    family_replacement: 'Palm Pre'
  - regex: '(ELinks)/((?:\d+\.)*\d+)'
  - regex: '(ELinks) \(((?:\d+\.)*\d+)'
  - regex: '(Links) \(((?:\d+\.)*\d+)'
  - regex: '(QtWeb) Internet Browser/((?:\d+\.)*\d+)'
  - regex: '(PhantomJS)/((?:\d+\.)*\d+)'
  - regex: '(AppleWebKit)/(\d+)(?:\.(\d+)|)\+ .{0,200} Safari'
    family_replacement: 'WebKit Nightly'
  - regex: '(Version)/((?:\d+\.)*\d+).{0,100}Safari/'
    family_replacement: 'Safari'
  - regex: '(Safari)/\d+'
  - regex: '(OLPC)/Update((?:\d+\.)*\d+)'
  - regex: '(OLPC)/Update()\.(\d+)'
    version_replacement: '0'
  - regex: '(SEMC\-Browser)/((?:\d+\.)*\d+)'
  - regex: '(Teleca)'
    family_replacement: 'Teleca Browser'
  - regex: '(Phantom)/V((?:\d+\.)*\d+)'
    family_replacement: 'Phantom Browser'
  - regex: '(Trident)/(7|8)\.(0)'
    family_replacement: 'IE'
    version_replacement: '11'
  - regex: '(Trident)/(6)\.(0)'
    family_replacement: 'IE'
    version_replacement: '10'
  - regex: '(Trident)/(5)\.(0)'
    family_replacement: 'IE'
    version_replacement: '9'
  - regex: '(Trident)/(4)\.(0)'
    family_replacement: 'IE'
    version_replacement: '8'
  - regex: '(Espial)/((?:\d+\.)*\d+)'
  - regex: '(AppleWebKit)/((?:\d+\.)*\d+)'
    family_replacement: 'Apple Mail'
  - regex: '(Firefox)/((?:\d+\.)*\d+)$'
  - regex: '(Firefox)/((?:\d+\.)*\d+)(pre|[ab]\d+[a-z]*|)'
  - regex: '([MS]?IE) ((?:\d+\.)*\d+)'
    family_replacement: 'IE'
  - regex: '(python-requests)/((?:\d+\.)*\d+)'
    family_replacement: 'Python Requests'
  - regex: '\b(Windows-Update-Agent|WindowsPowerShell|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|PycURL|Wget|wget2|aria2|Axel|OpenBSD ftp|lftp|jupdate|insomnia|fetch libfetch|akka-http|got|CloudCockpitBackend|ReactorNetty|axios|Jersey|Vert.x-WebClient|Apache-CXF|Go-CF-client|go-resty|AHC|HTTPie)(?:[ /]((?:\d+\.)*\d+)|)'
  - regex: '^(cf)\/((?:\d+\.)*\d+)'
    family_replacement: 'CloudFoundry'
  - regex: '^(sap-leonardo-iot-sdk-nodejs) \/ ((?:\d+\.)*\d+)'
  - regex: '^(SAP NetWeaver Application Server) \(1.0;(\d{1})(\d{2})\)'
  - regex: '^(\w+-HTTPClient)\/((?:\d+\.)*\d+)-(\S+)'
    family_replacement: 'HTTPClient'
  - regex: '^(go-cli)\s((?:\d+\.)*\d+)'
  - regex: '^(Java-EurekaClient|Java-EurekaClient-Replication|HTTPClient|lua-resty-http)\/v?((?:\d+\.)*\d+)'
  - regex: '^(ping-service|sap xsuaa|Node-oauth|Site24x7|SAP CPI|JAEGER_SECURITY)'
  - regex: '(Python/3\.\d{1,3} aiohttp)/((?:\d+\.)*\d+)'
    family_replacement: 'Python aiohttp'
  - regex: '(Java)[/ ]?\d{1}\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+|)'
  - regex: '(Java)[/ ]?((?:\d+\.)*\d+)'
  - regex: '(minio-go)/v((?:\d+\.)*\d+)'
  - regex: '^(ureq)[/ ]((?:\d+\.)*\d+)'
  - regex: '^(http\.rb)/((?:\d+\.)*\d+)'
  - regex: '^(GuzzleHttp)/((?:\d+\.)*\d+)'
  - regex: '^(grab)\b'
  - regex: '^(Cyberduck)/((?:\d+\.)*\d+)(?:\.\d+|)'
  - regex: '^(S3 Browser) ((?:\d+\.)*\d+)(?:\s*https?://s3browser\.com|)'
  - regex: '(S3Gof3r)'
  - regex: '\b(ibm-cos-sdk-(?:core|java|js|python))/((?:\d+\.)*\d+)'
  - regex: '^(rusoto)/((?:\d+\.)*\d+)'
  - regex: '^(rclone)/v((?:\d+\.)*\d+)'
  - regex: '^(Roku)/DVP-((?:\d+\.)*\d+)'
  - regex: '(Kurio)\/((?:\d+\.)*\d+)'
    family_replacement: 'Kurio App'
  - regex: '^(Box(?: Sync)?)/((?:\d+\.)*\d+)'
  - regex: '^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/((?:\d+\.)*\d+)'
    family_replacement: 'ViaFree'
  - regex: '(Transmit)/((?:\d+\.)*\d+)'
  - regex: '(Download Master)'
  - regex: '\b(HTTrack) ((?:\d+\.)*\d+|)'
  - regex: '(Ladybird)\/((?:\d+\.)*\d+)'
  - regex: '(MullvadBrowser)/((?:\d+\.)*\d+|)'
  - regex: '^(rclone)/v((?:\d+\.)*\d+)'
  - regex: '^(Roku)/DVP-((?:\d+\.)*\d+)'
  - regex: '(Kurio)\/((?:\d+\.)*\d+)'
    family_replacement: 'Kurio App'
  - regex: '^(Box(?: Sync)?)/((?:\d+\.)*\d+)'
  - regex: '^(ViaFree|Viafree)-(?:tvOS-)?[A-Z]{2}/((?:\d+\.)*\d+)'
    family_replacement: 'ViaFree'
  - regex: '(Transmit)/((?:\d+\.)*\d+)'
  - regex: '(Download Master)'
  - regex: '\b(HTTrack) ((?:\d+\.)*\d+|)'
  - regex: '(Ladybird)\/((?:\d+\.)*\d+)'
  - regex: '(MullvadBrowser)/((?:\d+\.)*\d+|)'
`)
